package org.cnam.mobileShopping.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Classe d'utilitaire sur divers objets
 * 
 * @author lolo
 * 
 */
public class PatternUtil {

	/**
	 * Méthode permettant de mettre en forme une date au format choisi
	 * 
	 * @param d La date en question
	 * @param pattern Le pattern de mise en forme
	 * @return La date au bon format
	 */
	public static String formatDate(Date d, String pattern) {
		SimpleDateFormat f = new SimpleDateFormat(pattern);
		return f.format(d);
	}

	/**
	 * Méthode permettant de mettre en forme une date au format choisi
	 * 
	 * @param s La date en String
	 * @param pattern Le pattern de mise en forme
	 * @return La date au bon format
	 */
	public static Date formatDate(String s, String pattern) {
		SimpleDateFormat f = new SimpleDateFormat(pattern);
		try {
			return f.parse(s);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * Méthode permettant de mettre en forme une date au format "dd/MM/yyyy"
	 * 
	 * @param d La date en question
	 * @return La date au bon format
	 */
	public static String formatDate(Date d) {
		return formatDate(d, "dd/MM/yyyy");
	}

	/**
	 * Méthode permettant de mettre en forme une date au format "dd/MM/yyyy"
	 * 
	 * @param s La date en String
	 * @return La date au bon format
	 */
	public static Date formatDate(String s) {
		return formatDate(s, "dd/MM/yyyy");
	}

	/**
	 * Méthode de vérification d'une chaine de caractère en testant sa nullité
	 * et si elle est vide
	 * 
	 * @param s La chaine de caractère à tester
	 * @return True ==> chaine vide ou null
	 */
	public static boolean isEmpty(String s) {
		return s == null || "".equals(s.trim());
	}

	/**
	 * Méthode permettant de tronquer la chaine de caractères à la limite de la
	 * taille d'un texto à savoir 160 caractères
	 * 
	 * @param message Le message à envoyer
	 * @return Le texte tronqué ou pas
	 */
	public static String getStringForSms(String message) {
		return getTruncString(message, 160);
	}

	/**
	 * Méthode permettant de tronquer une string à partir d'un certain nombre de
	 * caractère
	 * 
	 * @param s La chaine de caractère à tronquer ou pas
	 * @param nb Nombre de caractère pour la chaine
	 * @return La chaine tronquer ou pas
	 */
	public static String getTruncString(String s, int nb) {
		if (s.length() < 160) {
			return s;
		}
		return s.substring(0, 156).replaceAll("\\[", "").replaceAll("\\]", "")
				+ "...";
	}
}
